{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第4.1步：调整树的参数：subsample 和 colsample_bytree(第三步调整gamma略过)\n",
    "(粗调，参数的步长为0.1；下一步是在粗调最佳参数周围，将步长降为0.05，进行精细调整)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath + \"RentListingInquries_FE_train.csv\")\n",
    "test = pd.read_csv(dpath + \"RentListingInquries_FE_test.csv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据探索略过"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将训练数据集和类别标签进行分割"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "X_train = train.drop(['interest_level'], axis =1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "准备进行交叉验证"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二轮参数调整得到的n_estimators最优值（193），max_depth最优值（6）， min_child_weight最优值（6），其余参数继续默认值的情况下调整subsample 和 colsample_bytree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test4_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test4_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58899, std: 0.00352, params: {'subsample': 0.3, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58606, std: 0.00473, params: {'subsample': 0.4, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58485, std: 0.00366, params: {'subsample': 0.5, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58407, std: 0.00386, params: {'subsample': 0.6, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58267, std: 0.00354, params: {'subsample': 0.7, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58279, std: 0.00365, params: {'subsample': 0.8, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58851, std: 0.00224, params: {'subsample': 0.3, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58587, std: 0.00379, params: {'subsample': 0.4, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58388, std: 0.00316, params: {'subsample': 0.5, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58349, std: 0.00389, params: {'subsample': 0.6, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58225, std: 0.00382, params: {'subsample': 0.7, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58246, std: 0.00355, params: {'subsample': 0.8, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58785, std: 0.00346, params: {'subsample': 0.3, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58715, std: 0.00345, params: {'subsample': 0.4, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58488, std: 0.00369, params: {'subsample': 0.5, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58334, std: 0.00338, params: {'subsample': 0.6, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58288, std: 0.00422, params: {'subsample': 0.7, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58292, std: 0.00348, params: {'subsample': 0.8, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58847, std: 0.00290, params: {'subsample': 0.3, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58705, std: 0.00409, params: {'subsample': 0.4, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58466, std: 0.00385, params: {'subsample': 0.5, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58341, std: 0.00397, params: {'subsample': 0.6, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58269, std: 0.00350, params: {'subsample': 0.7, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58254, std: 0.00404, params: {'subsample': 0.8, 'colsample_bytree': 0.9}],\n",
       " {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       " -0.5822524490039523)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb4_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=193,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=6,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch4_1 = GridSearchCV(xgb4_1, param_grid = param_test4_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch4_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch4_1.grid_scores_, gsearch4_1.best_params_,     gsearch4_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([209.83172841, 217.12076273, 237.67931528, 239.36480742,\n",
       "        236.92589378, 241.37536426, 205.88236856, 236.250174  ,\n",
       "        259.93344102, 267.50034819, 267.04631   , 269.90346179,\n",
       "        226.25062561, 263.33938646, 289.45788136, 298.94797482,\n",
       "        299.15115275, 307.26674438, 251.62647419, 290.9617516 ,\n",
       "        320.71670842, 329.40214357, 329.60087967, 320.82850561]),\n",
       " 'mean_score_time': array([0.98792176, 0.87355323, 0.72044477, 0.69291158, 0.69551244,\n",
       "        0.69775996, 0.72884445, 0.70535498, 0.69988441, 0.72860804,\n",
       "        0.69664726, 0.72335367, 0.70706739, 0.72610154, 0.70018587,\n",
       "        0.74175763, 0.70534844, 0.79262486, 0.73196464, 0.70979619,\n",
       "        0.74669027, 0.714852  , 0.70779686, 0.61588488]),\n",
       " 'mean_test_score': array([-0.58899393, -0.58605621, -0.58484907, -0.58406959, -0.58266936,\n",
       "        -0.58278728, -0.58850708, -0.58587148, -0.58388225, -0.58348929,\n",
       "        -0.58225245, -0.58246029, -0.58784699, -0.5871518 , -0.58488344,\n",
       "        -0.58333643, -0.5828778 , -0.58292354, -0.5884749 , -0.58704977,\n",
       "        -0.58466124, -0.58340773, -0.5826903 , -0.58254492]),\n",
       " 'mean_train_score': array([-0.50492275, -0.49894633, -0.49531391, -0.49228656, -0.49056759,\n",
       "        -0.49063349, -0.50166937, -0.4960372 , -0.49232823, -0.489344  ,\n",
       "        -0.48792858, -0.48757281, -0.49881886, -0.49325759, -0.4892055 ,\n",
       "        -0.48711781, -0.48518113, -0.48527635, -0.49661824, -0.49063525,\n",
       "        -0.4869456 , -0.48392147, -0.48343367, -0.48294448]),\n",
       " 'param_colsample_bytree': masked_array(data=[0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.7, 0.7, 0.7, 0.7, 0.7,\n",
       "                    0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.9, 0.9, 0.9, 0.9,\n",
       "                    0.9, 0.9],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_subsample': masked_array(data=[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6, 0.7,\n",
       "                    0.8, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.3, 0.4, 0.5, 0.6,\n",
       "                    0.7, 0.8],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " 'rank_test_score': array([24, 18, 15, 13,  4,  6, 23, 17, 12, 11,  1,  2, 21, 20, 16,  9,  7,\n",
       "         8, 22, 19, 14, 10,  5,  3], dtype=int32),\n",
       " 'split0_test_score': array([-0.58315267, -0.57789171, -0.57869365, -0.5777982 , -0.57684689,\n",
       "        -0.5772331 , -0.58459821, -0.57914044, -0.57849595, -0.57712549,\n",
       "        -0.57609077, -0.57640282, -0.58215435, -0.58136598, -0.57854725,\n",
       "        -0.57725112, -0.57591663, -0.57722988, -0.5836011 , -0.58068584,\n",
       "        -0.57762455, -0.57782941, -0.57718302, -0.57669393]),\n",
       " 'split0_train_score': array([-0.50535067, -0.50058168, -0.49684891, -0.49470163, -0.49282725,\n",
       "        -0.49344653, -0.50481519, -0.49765553, -0.49399925, -0.48937646,\n",
       "        -0.48826555, -0.48957132, -0.50123175, -0.49468116, -0.49171098,\n",
       "        -0.49100821, -0.48745101, -0.48664786, -0.49820055, -0.49375411,\n",
       "        -0.48813529, -0.4859094 , -0.48653268, -0.48340792]),\n",
       " 'split1_test_score': array([-0.58782729, -0.58409431, -0.58369405, -0.58173319, -0.58069121,\n",
       "        -0.58107463, -0.58743062, -0.58644757, -0.58289794, -0.58222657,\n",
       "        -0.58032025, -0.58117508, -0.58685652, -0.58573768, -0.58396042,\n",
       "        -0.58216389, -0.58092605, -0.58244082, -0.58698914, -0.58404105,\n",
       "        -0.58454329, -0.58006268, -0.58088587, -0.5801956 ]),\n",
       " 'split1_train_score': array([-0.50487879, -0.49934808, -0.49535857, -0.49127786, -0.48937733,\n",
       "        -0.49055936, -0.50288758, -0.49737593, -0.49164569, -0.48914367,\n",
       "        -0.48673514, -0.48589907, -0.49926719, -0.49467895, -0.48819591,\n",
       "        -0.48635056, -0.4854057 , -0.48464918, -0.49585156, -0.490679  ,\n",
       "        -0.48804526, -0.48470955, -0.48389299, -0.48362391]),\n",
       " 'split2_test_score': array([-0.59006571, -0.58727707, -0.58577935, -0.58566061, -0.58385635,\n",
       "        -0.58237473, -0.59009556, -0.58491799, -0.58435464, -0.58300968,\n",
       "        -0.58330426, -0.58314604, -0.58767374, -0.58759024, -0.58612513,\n",
       "        -0.58484994, -0.58325287, -0.58207098, -0.58934324, -0.58859425,\n",
       "        -0.58504204, -0.58381561, -0.58265352, -0.58177819]),\n",
       " 'split2_train_score': array([-0.5046053 , -0.49915613, -0.49499233, -0.49166427, -0.49132158,\n",
       "        -0.49086001, -0.50054028, -0.49630106, -0.49280726, -0.48973921,\n",
       "        -0.48879429, -0.48699222, -0.49782237, -0.49153044, -0.48795467,\n",
       "        -0.486025  , -0.48541847, -0.48490409, -0.4978463 , -0.48972792,\n",
       "        -0.48810279, -0.48279761, -0.48211872, -0.4818202 ]),\n",
       " 'split3_test_score': array([-0.59000271, -0.59042395, -0.5862126 , -0.58642789, -0.58508063,\n",
       "        -0.5853499 , -0.5897678 , -0.5894066 , -0.58575857, -0.58707438,\n",
       "        -0.58414766, -0.58474939, -0.59009649, -0.58986634, -0.58595171,\n",
       "        -0.58630949, -0.58717867, -0.58532233, -0.59093943, -0.59028434,\n",
       "        -0.58724394, -0.58767742, -0.58582329, -0.58634143]),\n",
       " 'split3_train_score': array([-0.50603376, -0.49810858, -0.49599368, -0.49254238, -0.48969219,\n",
       "        -0.48915537, -0.49971881, -0.4941747 , -0.49193205, -0.48964103,\n",
       "        -0.48838957, -0.48872048, -0.49710143, -0.49242164, -0.4894603 ,\n",
       "        -0.48638689, -0.48309555, -0.4845731 , -0.49522914, -0.48957269,\n",
       "        -0.48642035, -0.4835446 , -0.48268263, -0.48350163]),\n",
       " 'split4_test_score': array([-0.59392278, -0.59059536, -0.58986721, -0.58872948, -0.58687301,\n",
       "        -0.58790562, -0.59064385, -0.58944589, -0.58790539, -0.5880117 ,\n",
       "        -0.58740087, -0.58682943, -0.59245524, -0.59119998, -0.58983421,\n",
       "        -0.58610857, -0.58711605, -0.58755512, -0.59150253, -0.59164474,\n",
       "        -0.58885364, -0.58765479, -0.58690709, -0.587717  ]),\n",
       " 'split4_train_score': array([-0.50374523, -0.49753721, -0.49337607, -0.49124667, -0.4896196 ,\n",
       "        -0.48914617, -0.500385  , -0.49467879, -0.49125688, -0.48881963,\n",
       "        -0.48745835, -0.48668095, -0.49867157, -0.49297577, -0.48870564,\n",
       "        -0.48581838, -0.48453493, -0.48560752, -0.49596362, -0.48944252,\n",
       "        -0.48402433, -0.48264617, -0.48194135, -0.48236873]),\n",
       " 'std_fit_time': array([10.21917268,  0.86849732,  0.69033897,  3.36366474,  0.70550373,\n",
       "         1.76347884,  0.27898329,  0.90118435,  0.73851233,  0.57272494,\n",
       "         0.77202077,  1.10490908,  0.9579624 ,  0.72160628,  0.66006756,\n",
       "         1.32000555,  0.60552659,  1.8472583 ,  0.94561064,  0.38474994,\n",
       "         0.4738224 ,  1.26269748,  0.97592269, 14.96543627]),\n",
       " 'std_score_time': array([0.18743886, 0.10111964, 0.01948554, 0.00424988, 0.00722776,\n",
       "        0.00945313, 0.0055253 , 0.01509636, 0.01279007, 0.05073589,\n",
       "        0.0186166 , 0.04770184, 0.00595306, 0.02694946, 0.0066856 ,\n",
       "        0.06912119, 0.00919151, 0.08895789, 0.03820206, 0.01080245,\n",
       "        0.09295299, 0.02543095, 0.03665054, 0.08158267]),\n",
       " 'std_test_score': array([0.00351959, 0.0047261 , 0.00366404, 0.0038625 , 0.00354137,\n",
       "        0.00365275, 0.00224128, 0.00379004, 0.00315939, 0.00388911,\n",
       "        0.00381839, 0.00355366, 0.00345574, 0.0034474 , 0.00369294,\n",
       "        0.00338294, 0.00421588, 0.00348082, 0.00289675, 0.00408686,\n",
       "        0.00384499, 0.00396839, 0.00349808, 0.00403738]),\n",
       " 'std_train_score': array([0.00076246, 0.0010552 , 0.00115576, 0.00129492, 0.00132335,\n",
       "        0.0015727 , 0.00190312, 0.00139964, 0.00097902, 0.00033483,\n",
       "        0.00073769, 0.00135979, 0.00141331, 0.00124965, 0.0013547 ,\n",
       "        0.00195657, 0.00141607, 0.00077681, 0.00117964, 0.00161889,\n",
       "        0.00159834, 0.00123324, 0.00169322, 0.00071865])}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch4_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.582252 using {'subsample': 0.7, 'colsample_bytree': 0.7}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x101341190>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch4_1.best_score_, gsearch4_1.best_params_))\n",
    "test_means = gsearch4_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch4_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch4_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch4_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch4_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 继续微调subsample 和 colsample_bytree（步长0.05）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.65, 0.7, 0.75], 'subsample': [0.65, 0.7, 0.75]}"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subsample = [0.65,0.7,0.75]\n",
    "colsample_bytree = [0.65,0.7,0.75]\n",
    "param_test4_2 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test4_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/cuiyue/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58309, std: 0.00347, params: {'subsample': 0.65, 'colsample_bytree': 0.65},\n",
       "  mean: -0.58282, std: 0.00367, params: {'subsample': 0.7, 'colsample_bytree': 0.65},\n",
       "  mean: -0.58336, std: 0.00362, params: {'subsample': 0.75, 'colsample_bytree': 0.65},\n",
       "  mean: -0.58328, std: 0.00347, params: {'subsample': 0.65, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58225, std: 0.00382, params: {'subsample': 0.7, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58264, std: 0.00336, params: {'subsample': 0.75, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58302, std: 0.00342, params: {'subsample': 0.65, 'colsample_bytree': 0.75},\n",
       "  mean: -0.58289, std: 0.00376, params: {'subsample': 0.7, 'colsample_bytree': 0.75},\n",
       "  mean: -0.58302, std: 0.00338, params: {'subsample': 0.75, 'colsample_bytree': 0.75}],\n",
       " {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       " -0.5822524490039523)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb4_2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=193,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=6,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch4_2 = GridSearchCV(xgb4_2, param_grid = param_test4_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch4_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch4_2.grid_scores_, gsearch4_2.best_params_,     gsearch4_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 以上结果显示微调后依然是[0.7,0.7]参数是最好的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.582252 using {'subsample': 0.7, 'colsample_bytree': 0.7}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x102dd1290>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch4_2.best_score_, gsearch4_2.best_params_))\n",
    "test_means = gsearch4_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch4_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch4_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch4_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch4_2.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree2.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
